Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

5.3K
Views
FastAPI arroja un error (Error al cargar la aplicación ASGI. No se pudo importar el módulo "api")

Traté de ejecutar FastAPI usando el servidor web uvicorn pero arroja un error.

Ejecuto este comando,

uvicorn api:app --reload --host 0.0.0.0

pero hay un error en la terminal.

 Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) Started reloader process [23445] Error loading ASGI app. Could not import module "api". Stopping reloader process [23445]

Agradezco mucho cualquier recomendación o sugerencia

over 4 years ago · Santiago Trujillo
9 answers
Answer question

0

su error tipográfico en "api" verifique su nombre de archivo.

over 4 years ago · Santiago Trujillo Report

0

TL;DR

Agregue el nombre del directorio delante de su nombre de archivo

 uvicorn src.main:app

o cd en ese directorio

 cd src uvicorn main:app

Respuesta larga

Ocurre porque no está en la misma carpeta con su instancia de la aplicación FastAPI más específicamente:

Digamos que tengo un árbol de aplicaciones como este;

 my_fastapi_app/ ├── app.yaml ├── docker-compose.yml ├── src │  └── main.py └── tests ├── test_xx.py └── test_yy.py $ pwd # Present Working Directory /home/yagiz/Desktop/my_fastapi_app

No estoy dentro de la misma carpeta con la instancia de mi aplicación, por lo que si intento ejecutar mi aplicación con uvicorn, obtendré un error como el tuyo.

 $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [40645] using statreload ERROR: Error loading ASGI app. Could not import module "main".

La respuesta es muy simple, agregue el nombre de la carpeta delante de su nombre de archivo

 uvicorn src.main:app --reload

o puede cambiar su directorio de trabajo

 cd src

Ahora estoy dentro de la carpeta con la instancia de mi aplicación.

 src └── main.py

Ejecuta tu uvicornio de nuevo

 $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [40726] using statreload INFO: Started server process [40728] INFO: Waiting for application startup. INFO: Application startup complete.
over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema y lo resolví agregando el nombre del paquete antes de main, en tu caso probando:

 uvicorn src.main:app --reload

puede resolver el problema

over 4 years ago · Santiago Trujillo Report

0

Esto funcionó para mí, mire los documentos para fastAPI. Estoy muy agradecido de haberlo encontrado, ya que el script de Python debe llamarse main.py no app.py

El comando uvicorn main:app se refiere a:

  1. main : el archivo main.py (el "módulo" de Python).
  2. app : el objeto creado dentro de main.py con la línea app = FastAPI()
  3. --reload : hace que el servidor se reinicie después de cambios en el código. Uso exclusivo para desarrollo.
over 4 years ago · Santiago Trujillo Report

0

Una razón por la que esto podría estar sucediendo es que está utilizando:

 uvicorn src/main:app --reload

en lugar de la sintaxis correcta :

 uvicorn src.main:app --reload

Note el . en lugar de la /


Eso suponiendo que (1) su estructura sea algo como esto:

 project_folder/ ├── some_folder ├── src │ └── main.py └── tests ├── test_xx.py └── test_yy.py

(2) que su objeto FastAPI() está efectivamente asignado a un objeto llamado app en main.py :

 app = FastAPI()

(3) está ejecutando el comando uvicorn desde project_folder , por ejemplo:

 (venv) <username>@<pcname>:~/PycharmProjects/project_folder$ uvicorn src.main:app --reload
over 4 years ago · Santiago Trujillo Report

0

Parece que es importante que nombre su archivo main.py, de lo contrario no funcionará.

Editar: en realidad, estaba ejecutando Jupyter Notebook en el puerto 8888, por lo que ese puerto ya estaba ocupado. Si tiene que ejecutar el cuaderno Jupyter, ejecútelo después de ejecutar el servidor API, el cuaderno se ejecutará automáticamente en 8889. Alternativamente, puede ejecutar el servidor API en un puerto diferente.

over 4 years ago · Santiago Trujillo Report

0

Presione el botón Guardar en VS Code, etc. porque a veces arrojará este error si no ha guardado el archivo. Me sucedió.

over 4 years ago · Santiago Trujillo Report

0

mover la declaración de importación para FastAPI a la parte superior de las declaraciones de importación corrige el error.

from fastapi import FastAPI "luego cualquier otra declaración de importación"

over 4 years ago · Santiago Trujillo Report

0

Use esta estructura de carpetas y configuración donde main está en el directorio principal ingrese la descripción de la imagen aquí

lanzamiento.json

 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: FastAPI", "type": "python", "request": "launch", "module": "uvicorn", "args": [ "main:app" ], "jinja": true } ] }

principal.py

 from fastapi import FastAPI app = FastAPI( title="test", description="test", version="0.0.1", ) if __name__ == "__main__": import uvicorn uvicorn.run( "main:app", host="0.0.0.0", reload=True, port=3001, )
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!